    long long maxWater(vector<int>& arr) {
        // write code here
        
       int l = 0, r = arr.size() - 1;
        long long ans = 0;
        int lmax = 0, rmax = 0;
        while(l < r)  ///刚开始取两端的数组时，初始的水量为0，最低高度为lmt,后面当某端出现低于lmt，水量一定被计算进去 
        {                //因为这种情况一定装水，当出现了更高的lmt，只有再高的lmt才能装水，故要更新下最低高度
                        
            lmax = max(lmax, arr[l]);
            rmax = max(rmax, arr[r]);
            if(lmax < rmax)
            {
                ans += lmax - arr[l++];//首次执行的时候不会出现ans增加  只有出现 比lmax或者 rmax更小的值才会增加
            }
            else
            {
                ans += rmax - arr[r--];//首次执行的时候不会出现ans增加 
            }
        }
        return ans;
    }
            

        
  
};